package OuraFifo;
import java.io.*;

public class FIFO
{
private int numberElements;     
private SNode head,rear;     

public FIFO()
{
numberElements=0;
head=null;     
rear=null;     
}

public int size()
{
return numberElements;
}
public boolean isEmpty()
{
return (numberElements<1);
}
public void enqueue(Item item)     
{
SNode x=new SNode(null, item);

if(isEmpty())     
head=x;
else     
rear.setNext(x);
rear=x;     
numberElements++;     
}
public Item dequeue()    
{
SNode temp;

if(isEmpty())
{
System.out.println("   ");
return null;
}

temp=head;
head=head.getNext();
temp.setNext(null);
numberElements--;

if (numberElements==0)
rear=null;     

return temp.getItem();
}

public Item first()     
{
if (isEmpty())
{
System.out.println("   ");
return null;
}
return head.getItem();
}
public void printFifo()
{
	SNode curr=head;
	while(curr!=null)
	{
	System.out.println(""+curr.getItem().getKey());
	curr=curr.getNext();
	}
}
}

